import os
import argparse
import json
import dataset_info
from util.tools import get_instance
"""
文件名: configs.py

功能:
    1. 用args提供config, 对外有一个函数为get_configs() 输出一个args

作者: 长弓路平
日期: 2024年10月22日
Retinal Image Dataset of Infants and ROP
"""

def get_configs():
    parser = argparse.ArgumentParser(description="Configuration for ROP dataset processing and model training")
    
    # 添加命令行参数
    parser.add_argument('--data_path', type=str, default='../Dataset/infantImages', help="Path to the dataset")
    parser.add_argument('--split_name', type=str, default='1', help="Name of the data split")
    parser.add_argument('--experiments_dir', type=str, default='./experiments', help="Directory for experiment results")
    parser.add_argument('--dataset_name', type=str, default='infantImages', help="Name of the dataset")
    parser.add_argument('--segment_model_path', type=str, default='./checkpoints/segment_model.pth', help="Path to the segmentation model")
    parser.add_argument('--segment_model_config_path', type=str, default='./LesionDetector/model_config_files/hrnet_w48.json', help="Path to the segmentation model config")
    parser.add_argument('--key_point_threshold', type=int, default=100, help="Threshold for key points")
    
    # cross_validate parameters
    parser.add_argument('--images_resolu', type=int, default=224, help="Resolution of the images")
    parser.add_argument('--bbox_expand', type=int, default=5, help="Expansion of the bounding box")
    parser.add_argument('--lesion_threshold', type=float, default=0.5, help="Threshold for lesion segmentation")
    

    
    # 获取参数
    args = parser.parse_args()
    # 如果指定的目录不存在，则创建
    for dir_path in [args.experiments_dir]:
        os.makedirs(dir_path, exist_ok=True)
    args.dataset_info=get_instance(dataset_info,args.dataset_name)
    return args

if __name__ == '__main__':
    args = get_configs()
    
    # 打印具体args的每一个参数
    print("Arguments:")
    for arg, value in vars(args).items():
        print(f"{arg}: {value}")

